/**
 * @param {number[]} nums
 * @param {number} k
 * @return {number[]}
 */
var topKFrequent = function (nums, k) {
  //定义哈希表：存储 num -> num 出现的次数
  let map = new Map()
  //遍历数组nums：统计每个num的出现次数
  for (let num of nums) {
    map.set(num, (map.get(num) || 0) + 1)
  }

  //将迭代器map.entries()转换成数组[[num,count],[num,count],[num,count]]，并按照出现次序count降序排序
  let sorted = Array.from(map.entries()).sort((a, b) => b[1] - a[1])
  //截取数组sorted的前k个元素，将数组元素解构赋值成[num,count]返回其中的num（map方法可以做到）
  return sorted.slice(0, k).map(([num, count]) => num)
};